home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / shell / igo / gosource / mdcheck.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  4.6 KB  |  206 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <te.h>
  6. #include <fntb.h>
  7. #include <gui.h>
  8. #include "igo.h"
  9.  
  10. extern int deskTopId;
  11. extern int menuBarId;
  12.  
  13. int    check_alertId = -1 ;
  14. int check_dialogId = -1 ;
  15. int    check_radioId[3] = -1 ;
  16. int    check_dbuttonId[4] = -1 ;
  17.  
  18. /*    選択されているラジオボタンの ID を格納する変数        */
  19.  
  20. int        check_radioAlterFlag = 0 ;
  21. int        check_id = 0;
  22. /* チェック再生状態を現すフラグ 0:チェック再生でない 1:チェック再生中 */
  23. char    check_flg = 0;
  24.  
  25.  
  26. /*    initDataMICHECK:check_radioId[0]:MJ_TICONL40の呼び出し関数    */
  27. /*    initDataMICHECK:check_radioId[1]:MJ_TICONL40の呼び出し関数    */
  28. /*    initDataMICHECK:check_radioId[2]:MJ_TICONL40の呼び出し関数    */
  29. int    mdcheck_radioFunc(kobj, messId, argc, pev, trigger)
  30. int        kobj ;
  31. int        messId ;
  32. int        argc ;
  33. EVENT    *pev ;
  34. int        trigger ;
  35. {
  36.     /*    現在選択状態にあるボタンを非選択状態にし、選択可にします    */
  37.     MTL_resetFlagObj(check_radioAlterFlag,~(MS_UNSELECT | MS_TOGGLE)) ;
  38.     MMI_SendMessage(check_radioAlterFlag, MM_SHOW, 0) ;
  39.  
  40.     /*  チェック再生選択フラグを更新します    */
  41.     check_radioAlterFlag = kobj ;
  42.  
  43.     /*    呼び出し元トグルボタンを選択状態にし、選択不可にします    */
  44.     MTL_setFlagObj(kobj, MS_UNSELECT | MS_TOGGLE) ;
  45.     MMI_SendMessage(kobj, MM_SHOW, 0) ;
  46.  
  47.     return NOERR ;
  48. }
  49.  
  50. /*    initDataMICHECK:check_dbuttonId[0]:MJ_DBUTTONL40の呼び出し関数    */
  51. int    mdcheck_set(kobj, messId, argc, pev, trigger)
  52. int        kobj ;
  53. int        messId ;
  54. int        argc ;
  55. EVENT    *pev ;
  56. int        trigger ;
  57. {
  58.     
  59.     /*    各設定値の読み取り    */
  60.     for (check_id = 0 ; check_id < 2; check_id++){
  61.         if (check_radioId[check_id] == check_radioAlterFlag)
  62.             break ;
  63.     }
  64.  
  65.     /*    現在選択状態にあるボタンを非選択状態にし、選択可にします    */
  66.     MTL_resetFlagObj(check_radioAlterFlag,~(MS_UNSELECT | MS_TOGGLE)) ;
  67.     MMI_SendMessage(check_radioAlterFlag, MM_SHOW, 0) ;
  68.  
  69.     /*    check_alertIdで示されるオブジェクトを消す        */
  70.     MMI_SendMessage( check_alertId, MM_ERASE , 0 ) ;
  71.  
  72.     /*    オブジェクトをダイアログから取り外す    */
  73.     MMI_SendMessage( check_alertId, MM_DETACH , 0 ) ;
  74.  
  75.     /*    オブジェクトをダイアログから取り外す    */
  76.     MMI_SendMessage( menuBarId, MM_DETACH , 0 ) ;
  77.  
  78.     /*    オブジェクトをダイアログに取り付ける    */
  79.     MMI_SendMessage( check_dialogId , MM_ATTACH , 1 , deskTopId ) ;
  80.  
  81.     /*    dialogId_handyでされるオブジェクトを表示する    */
  82.     MMI_SendMessage( check_dialogId , MM_SHOW , 0 ) ; 
  83.  
  84.     check_flg = 1;
  85.     mdcheck_kifu_forward();
  86.     comment_dispFunc();
  87.     ban_note_disp();
  88.  
  89.     return NOERR ;
  90.     
  91. }
  92.  
  93. /*    initDataMICHECK:check_dbuttonId[1]:MJ_DBUTTONL40の呼び出し関数    */
  94. int    mdcheck_cancel(kobj, messId, argc, pev, trigger)
  95. int        kobj ;
  96. int        messId ;
  97. int        argc ;
  98. EVENT    *pev ;
  99. int        trigger ;
  100. {
  101.     /*    check_alertIdで示されるオブジェクトを消す        */
  102.     MMI_SendMessage( check_alertId, MM_ERASE , 0 ) ;
  103.  
  104.     /*    オブジェクトをダイアログから取り外す    */
  105.     MMI_SendMessage( check_alertId, MM_DETACH , 0 ) ;
  106.  
  107.     retunrInitMenuFunc();
  108.  
  109.     return NOERR ;
  110. }
  111.  
  112. /*    initDataMICHECK:check_dbuttonId[2]:MJ_DBUTTONL40の呼び出し関数    */
  113. int    mdcheck_forward(kobj, messId, argc, pev, trigger)
  114. int        kobj ;
  115. int        messId ;
  116. int        argc ;
  117. EVENT    *pev ;
  118. int        trigger ;
  119. {
  120.     kifu_forward();
  121.     mdcheck_kifu_forward();
  122.     comment_dispFunc();
  123.     ban_note_disp();
  124.     return NOERR ;
  125. }
  126.  
  127. /*    initDataMICHECK:check_dbuttonId[3]:MJ_DBUTTONL40の呼び出し関数    */
  128. int    mdcheck_end(kobj, messId, argc, pev, trigger)
  129. int        kobj ;
  130. int        messId ;
  131. int        argc ;
  132. EVENT    *pev ;
  133. int        trigger ;
  134. {
  135.     check_flg = 0;
  136.  
  137.     /*    check_dialogIdで示されるオブジェクトを消す        */
  138.     MMI_SendMessage( check_dialogId, MM_ERASE , 0 ) ;
  139.  
  140.     /*    オブジェクトをダイアログから取り外す    */
  141.     MMI_SendMessage( check_dialogId, MM_DETACH , 0 ) ;
  142.  
  143.     /*    オブジェクトをダイアログに取り付ける    */
  144.     MMI_SendMessage( menuBarId , MM_ATTACH , 1 , deskTopId ) ;
  145.     /*    オブジェクトをダイアログに取り付ける    */
  146.     MMI_SendMessage( menuBarId , MM_SHOW , 0);
  147.  
  148.     return NOERR ;
  149. }
  150.  
  151. /*  入力の位置をチェックして正しければ先に進める */
  152. int mdcheck_input_check(int ichi)
  153. {
  154. int forward_ichi;
  155. char iro;
  156.  
  157.     if(check_flg == 0){
  158.         return 0;
  159.     }
  160.     
  161.     kifu_get_forwardinfo(&forward_ichi, &iro);
  162.     if(forward_ichi == ichi){
  163.         mdcheck_forward();
  164.     }
  165.     
  166.     return 1;
  167.     
  168. }
  169.  
  170. /*  kifuをチェックする部分まで先に進める */
  171. int mdcheck_kifu_forward()
  172. {
  173. int ichi;
  174. char iro;
  175.  
  176.     
  177.     while(kifu_get_forwardinfo(&ichi, &iro) != REPEAT_CANNOT_BOTTOM_CELL){
  178.         switch(check_id){
  179.           case 0:
  180.               if(iro == BLACK || iro == WHITE){
  181.                   return 0;
  182.               }else{
  183.                   break;
  184.               }
  185.           case 1:
  186.               if(iro == BLACK){
  187.                   return 0;
  188.               }else{
  189.                   break;
  190.               }
  191.           case 2:
  192.               if(iro == WHITE){
  193.                   return 0;
  194.               }else{
  195.                   break;
  196.               }
  197.           default: 
  198.                   return;
  199.                   break;
  200.         }
  201.         kifu_forward();
  202.     }
  203.     
  204.     return 0;
  205.  
  206. }